Django এ JSON (JavaScript Object Notation) Response তৈরি করার জন্য সাধারণত JsonResponse ক্লাস ব্যবহার করা হয়। এটি একটি বিশেষ ধরনের HTTP Response যা JSON ফরম্যাটে ডেটা রিটার্ন করে। Django REST Framework ব্যবহার না করেও সাধারণ Django অ্যাপ্লিকেশনগুলোতে JSON Response সহজে তৈরি করা সম্ভব।
এটি API নির্মাণ, ডেটা এক্সচেঞ্জ, বা JavaScript ফ্রন্ট-এন্ডের সাথে সঞ্চালিত হওয়া ডেটার জন্য ব্যবহৃত হয়।
Django তে JSON Response তৈরি করা
Django তে JsonResponse ক্লাস ব্যবহার করে খুব সহজেই JSON ফরম্যাটে রেসপন্স তৈরি করা যায়। এর মাধ্যমে আপনি Python ডিকশনারি বা অন্যান্য ডেটা ফরম্যাটকে JSON-এ রূপান্তর করতে পারেন।
১. JsonResponse ব্যবহার
JsonResponse ক্লাসটি Django তে ইনক্লুডেড থাকে, তাই আপনাকে কোনো অতিরিক্ত প্যাকেজ ইনস্টল করতে হবে না। এটি সরাসরি django.http মডিউল থেকে ইমপোর্ট করা হয়।
উদাহরণ:
from django.http import JsonResponse
def my_view(request):
data = {
'name': 'John Doe',
'age': 30,
'email': 'john.doe@example.com'
}
return JsonResponse(data)
এখানে:
JsonResponse(data): এটি Python ডিকশনারিকে JSON ফরম্যাটে রিটার্ন করবে।dataহলো যে ডেটা আপনি JSON ফরম্যাটে রিটার্ন করতে চান।
যখন ইউজার /my-view/ URL-এ রিকোয়েস্ট পাঠাবে, তখন Django JSON আউটপুট রিটার্ন করবে, যেমন:
{
"name": "John Doe",
"age": 30,
"email": "john.doe@example.com"
}
২. JsonResponse এর অতিরিক্ত অপশন
Django তে JsonResponse কনফিগার করার জন্য আরও কিছু অতিরিক্ত অপশন রয়েছে, যেমন:
safe: ডিফল্টভাবে,JsonResponseশুধুমাত্র ডিকশনারি বা তালিকা টাইপের ডেটা রিটার্ন করতে দেয়। যদি আপনি অন্য কোন অবজেক্ট (যেমন tuple বা অন্য কোন নন-ডিকশনারি অবজেক্ট) JSON আউটপুট হিসেবে রিটার্ন করতে চান, তবেsafe=Falseপ্যারামিটার ব্যবহার করতে হবে।
উদাহরণ: safe=False ব্যবহার
from django.http import JsonResponse
def my_view(request):
data = ("apple", "banana", "cherry") # Tuple
return JsonResponse(data, safe=False)
এখানে:
safe=False: এটি অনুমতি দেয় যে, আপনি যে কোনো Python অবজেক্টকে (যেমন tuple) JSON আউটপুট হিসেবে রিটার্ন করতে পারেন। অন্যথায়,JsonResponseশুধুমাত্র dictionary বা list কে JSON আউটপুট হিসেবে অনুমোদন করবে।
৩. কাস্টম HTTP স্ট্যাটাস কোড
আপনি JSON রেসপন্সের সাথে HTTP স্ট্যাটাস কোড কাস্টমাইজও করতে পারেন। এর মাধ্যমে, আপনি সফল বা ত্রুটি অবস্থায় আলাদা স্ট্যাটাস কোড রিটার্ন করতে পারবেন।
উদাহরণ: HTTP স্ট্যাটাস কোড কাস্টমাইজ করা
from django.http import JsonResponse
def my_view(request):
data = {
'message': 'Data saved successfully'
}
return JsonResponse(data, status=201) # HTTP 201 (Created) Status Code
এখানে:
status=201: এটি HTTP 201 স্ট্যাটাস কোড রিটার্ন করবে, যা সাধারণত একটি রিসোর্স সফলভাবে তৈরি হলে রিটার্ন করা হয়।
৪. Complex JSON রেসপন্স তৈরি করা
অনেক সময়, আপনি কমপ্লেক্স JSON রেসপন্স তৈরি করতে পারেন যা nested ডেটা বা তালিকা (list) ধারণ করে। আপনি JsonResponse এর মাধ্যমে সহজেই এই ধরনের রেসপন্স তৈরি করতে পারেন।
উদাহরণ: Nested JSON রেসপন্স
from django.http import JsonResponse
def my_view(request):
data = {
'status': 'success',
'user': {
'name': 'John Doe',
'email': 'john.doe@example.com',
'profile': {
'age': 30,
'location': 'New York'
}
},
'message': 'User data retrieved successfully'
}
return JsonResponse(data)
এখানে:
userএবংprofileহল nested dictionaries যা JSON রেসপন্সে অন্তর্ভুক্ত।
৫. JSON রেসপন্সে ডেটা ফিল্টারিং
যদি আপনি ডাটাবেস থেকে ডেটা নিয়ে JSON রেসপন্স তৈরি করতে চান, তবে আপনি Django ORM ব্যবহার করে কুয়েরি করা ডেটা ফিল্টার এবং রিটার্ন করতে পারেন।
উদাহরণ: ডাটাবেস থেকে JSON রেসপন্স তৈরি
from django.http import JsonResponse
from .models import User
def user_list(request):
users = User.objects.all() # সকল ইউজার
data = list(users.values('name', 'email')) # প্রয়োজনীয় ফিল্ড নির্বাচন
return JsonResponse(data, safe=False)
এখানে:
users.values('name', 'email'): এটি User মডেল থেকে শুধুমাত্রnameএবংemailফিল্ডের ডেটা নিয়ে আসবে।list(): এটি queryset কে Python list-এ রূপান্তর করবে, কারণJsonResponseশুধুমাত্র list বা dictionary ধরনের ডেটা নেয়।
সারাংশ
Django তে JSON রেসপন্স তৈরি করা একটি সহজ প্রক্রিয়া, যেখানে আপনি JsonResponse ক্লাস ব্যবহার করে Python ডেটাকে JSON ফরম্যাটে রিটার্ন করতে পারেন। এটি API নির্মাণ এবং ফ্রন্ট-এন্ডে ডেটা এক্সচেঞ্জের জন্য অত্যন্ত উপকারী। Django তে JSON রেসপন্স কাস্টমাইজ করা, নেস্টেড JSON, এবং ডেটাবেস থেকে ডেটা এক্সট্র্যাক্ট করে JSON আউটপুট তৈরি করা সম্ভব।
Read more